package it.polimi.authentication.ejb.usermanagement;

import it.polimi.authentication.ejb.usermanagement.dto.PacchettoPredefinitoDTO;

import java.io.Serializable;
import java.math.BigDecimal;

import javax.persistence.*;

import java.util.Date;



/**
 * The persistent class for the pacchetto database table.
 * 
 */
@Entity
@NamedQueries({
	@NamedQuery(name="Pacchetto.findAll", query="SELECT p FROM Pacchetto p WHERE p.Disponibile = true and p.tipo = 'predefinito'"),
	@NamedQuery(name="Pacchetto.findDataPartenza", query="SELECT p.data_Partenza FROM Pacchetto p WHERE p.id = :idPacchetto"),
	@NamedQuery(name="Pacchetto.findDataRitorno", query="SELECT p.data_Ritorno FROM Pacchetto p WHERE p.id = :idPacchetto"),
	@NamedQuery(name="Pacchetto.findPrezzo", query="SELECT p.prezzo FROM Pacchetto p WHERE p.id= :idPacchetto"),
	@NamedQuery(name="Pacchetto.findPacchettoById", query="SELECT p FROM Pacchetto p WHERE p.id= :idPacchetto"),
	@NamedQuery(name="Pacchetto.findId", query="SELECT p.id FROM Pacchetto p WHERE p.nome= :nomePacchetto"),
	@NamedQuery(name="Pacchetto.findthisP", query="SELECT p FROM Pacchetto p, ListaPacchettiComprati l WHERE p.id=l.pacchetto and l.email= :email"),
	@NamedQuery(name="Pacchetto.findthisL", query="SELECT l FROM Pacchetto p, ListaPacchettiComprati l WHERE p.id=l.pacchetto and l.email= :email"),
	@NamedQuery(name="Pacchetto.findthisPGL", query="SELECT p FROM Pacchetto p, GiftList gl WHERE p.id=gl.pacchetto and gl.email= :email"),
	@NamedQuery(name="Pacchetto.findthisLGL", query="SELECT gl FROM Pacchetto p, GiftList gl WHERE p.id=gl.pacchetto and gl.email= :email")

})
public class Pacchetto implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	private int id;

	@Temporal(TemporalType.TIMESTAMP)
	@Column(nullable=true)
	private Date data_Partenza;
	
	@Temporal(TemporalType.TIMESTAMP)
	@Column(nullable=true)
	private Date data_Ritorno;
	
	private String nome;

	private String tipo;
	
	private Boolean Disponibile;
	
	private BigDecimal prezzo;
	
	private String email;

	//bi-directional one-to-one association to GiftList
	/*@OneToOne(mappedBy="pacchettoBean")
	private GiftList giftList;*/

	//bi-directional many-to-one association to ListaPacchettiComprati
	/*@OneToMany(mappedBy="pacchettoBean")
	private List<ListaPacchettiComprati> listaPacchettiCompratis;*/

	//bi-directional many-to-one association to PacchettoCitta
	//@OneToMany(mappedBy="pacchetto")
	//private List<PacchettoCitta> pacchettoCittas;

	//bi-directional many-to-one association to MezzoDiTrasporto
	/*@OneToMany(mappedBy="pacchetto")
	private List<MezzoDiTrasporto> mezzoDiTrasportos;*/

	//bi-directional many-to-one association to PacchettoEscursione
	/*@OneToMany(mappedBy="pacchetto")
	private List<PacchettoEscursione> pacchettoEscursiones;

	//bi-directional many-to-one association to PacchettoHotel
	@OneToMany(mappedBy="pacchetto")
	private List<PacchettoHotel> pacchettoHotels;*/

	
	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public Pacchetto() {
	}
	
	public Pacchetto(PacchettoPredefinitoDTO pd) {
		super();
		this.nome = pd.getNome();
		this.data_Partenza=pd.getData_Partenza();
		this.data_Ritorno = pd.getData_Ritorno();
		this.tipo = pd.getTipo();
		this.prezzo = pd.getPrezzo();
		this.email = pd.getEmail();
	}
	
	public BigDecimal getPrezzo() {
		return prezzo;
	}

	public void setPrezzo(BigDecimal prezzo) {
		this.prezzo = prezzo;
	}

	public Boolean getDisponibile() {
		return Disponibile;
	}

	public void setDisponibile(Boolean disponibile) {
		Disponibile = disponibile;
	}


	public int getId() {
		return this.id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public Date getData_Partenza() {
		return this.data_Partenza;
	}

	public void setData_Partenza(Date data_Partenza) {
		this.data_Partenza = data_Partenza;
	}
	

	public Date getData_Ritorno() {
		return this.data_Ritorno;
	}

	public void setData_Ritorno(Date data_Ritorno) {
		this.data_Ritorno = data_Ritorno;
	}

	public String getNome() {
		return this.nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getTipo() {
		return this.tipo;
	}

	public void setTipo(String tipo) {
		this.tipo = tipo;
	}

	/*public GiftList getGiftList() {
		return this.giftList;
	}

	public void setGiftList(GiftList giftList) {
		this.giftList = giftList;
	}*/

	/*public List<ListaPacchettiComprati> getListaPacchettiCompratis() {
		return this.listaPacchettiCompratis;
	}

	public void setListaPacchettiCompratis(List<ListaPacchettiComprati> listaPacchettiCompratis) {
		this.listaPacchettiCompratis = listaPacchettiCompratis;
	}

	public ListaPacchettiComprati addListaPacchettiComprati(ListaPacchettiComprati listaPacchettiComprati) {
		getListaPacchettiCompratis().add(listaPacchettiComprati);
		listaPacchettiComprati.setPacchettoBean(this);

		return listaPacchettiComprati;
	}

	public ListaPacchettiComprati removeListaPacchettiComprati(ListaPacchettiComprati listaPacchettiComprati) {
		getListaPacchettiCompratis().remove(listaPacchettiComprati);
		listaPacchettiComprati.setPacchettoBean(null);

		return listaPacchettiComprati;
	}*/

	/*public List<PacchettoCitta> getPacchettoCittas() {
		return this.pacchettoCittas;
	}

	public void setPacchettoCittas(List<PacchettoCitta> pacchettoCittas) {
		this.pacchettoCittas = pacchettoCittas;
	}

	public PacchettoCitta addPacchettoCitta(PacchettoCitta pacchettoCitta) {
		getPacchettoCittas().add(pacchettoCitta);
		pacchettoCitta.setPacchetto(this);

		return pacchettoCitta;
	}

	public PacchettoCitta removePacchettoCitta(PacchettoCitta pacchettoCitta) {
		getPacchettoCittas().remove(pacchettoCitta);
		pacchettoCitta.setPacchetto(null);

		return pacchettoCitta;
	}*/

	/*public List<MezzoDiTrasporto> getMezzoDiTrasportos() {
		return this.mezzoDiTrasportos;
	}

	public void setMezzoDiTrasportos(List<MezzoDiTrasporto> mezzoDiTrasportos) {
		this.mezzoDiTrasportos = mezzoDiTrasportos;
	}

	public MezzoDiTrasporto addMezzoDiTrasporto(MezzoDiTrasporto mezzoDiTrasporto) {
		getMezzoDiTrasportos().add(mezzoDiTrasporto);
		mezzoDiTrasporto.setPacchetto(this);

		return mezzoDiTrasporto;
	}

	public MezzoDiTrasporto removeMezzoDiTrasporto(MezzoDiTrasporto mezzoDiTrasporto) {
		getMezzoDiTrasportos().remove(mezzoDiTrasporto);
		mezzoDiTrasporto.setPacchetto(null);

		return mezzoDiTrasporto;
	}

	/*public List<PacchettoEscursione> getPacchettoEscursiones() {
		return this.pacchettoEscursiones;
	}

	public void setPacchettoEscursiones(List<PacchettoEscursione> pacchettoEscursiones) {
		this.pacchettoEscursiones = pacchettoEscursiones;
	}

	public PacchettoEscursione addPacchettoEscursione(PacchettoEscursione pacchettoEscursione) {
		getPacchettoEscursiones().add(pacchettoEscursione);
		pacchettoEscursione.setPacchetto(this);

		return pacchettoEscursione;
	}

	public PacchettoEscursione removePacchettoEscursione(PacchettoEscursione pacchettoEscursione) {
		getPacchettoEscursiones().remove(pacchettoEscursione);
		pacchettoEscursione.setPacchetto(null);

		return pacchettoEscursione;
	}

	public List<PacchettoHotel> getPacchettoHotels() {
		return this.pacchettoHotels;
	}

	public void setPacchettoHotels(List<PacchettoHotel> pacchettoHotels) {
		this.pacchettoHotels = pacchettoHotels;
	}

	public PacchettoHotel addPacchettoHotel(PacchettoHotel pacchettoHotel) {
		getPacchettoHotels().add(pacchettoHotel);
		pacchettoHotel.setPacchetto(this);

		return pacchettoHotel;
	}

	public PacchettoHotel removePacchettoHotel(PacchettoHotel pacchettoHotel) {
		getPacchettoHotels().remove(pacchettoHotel);
		pacchettoHotel.setPacchetto(null);

		return pacchettoHotel;
	}*/

}